24 research outputs found

    A survey of program slicing techniques

    Get PDF

    A slicing-based approach for locating type errors

    Get PDF
    The effectiveness of a type checking tool strongly depends on the accuracy of the positional information that is associated with type errors. We present an approach where the location associated with an error message e is defined as a slice P_e of the program P being type checked. We show that this approach yields highly accurate positional information: P_e is a program that contains precisely those program constructs in P that caused error e. Semantically, we have the interesting property that type checking P_e is guaranteed to produce the same error e. Our approach is completely language-independent, and has been implemented for a significant subset of Pascal

    A slicing-based approach for locating type errors

    Get PDF
    The effectiveness of a type checking tool strongly depends on the accuracy of the positional information that is associated with type errors. We present an approach where the location associated with an error message e is defined as a slice P_e of the program P being type checked. We show that this approach yields highly accurate positional information: P_e is a program that contains precisely those program constructs in P that caused error e. Semantically, we have the interesting property that type checking P_e is guaranteed to produce the same error e. Our approach is completely language-independent, and has been implemented for a significant subset of Pascal

    Animators and error reporters for generated programming environments

    Get PDF
    We study animators and error reporters for generated programming environments. An error reporter is a tool for indicating the exact position of a type-error in the source text. An animator visualizes program execution; typically, it highlights the statement that is currently executing. Applications of both tools are mainly to be found in the areas of debugging and tutoring. Instead of explicitly extending language specifications with these facilities, we claim that error reporters and animators can be generated from existing specifications for type-checkers and interpreters with little effort; to this end, a simple pattern-matching mechanism is used in conjunction with origin tracking, a generic tracing technique. In this paper, we discuss our claim, and at the same time investigate the limitations and deficiencies of origin tracking. Our techniques are illustrated using an example language named CLaX, a Pascal relative. The full specifications of the CLaX syntax, type-checker and interpreter are included in appendices

    A study of dead data members in C++ applications

    No full text

    Practical Extraction Techniques for Java

    No full text
    Reducing application size is important for software that is distributed via the internet, in order to keep download times manageable, and in the domain of embedded systems, where applications are often stored in (Read-Only or Flash) memory. This paper explores extraction techniques such as the removal of unreachable methods and redundant fields, inlining of method calls, and transformation of the class hierarchy for reducing application size. We implemented a number of extraction techniques in Jax, an application extractor for Java, and evaluated their effectiveness on a set of large Java applications. We found that, on average, the class file archives for these benchmarks were reduced to 37.5% of their original size. Modeling dynamic language features such as reflection, and extracting software distributions other than complete applications requires additional user input. We present a uniform approach for supplying this input that relies on MEL, a modular specification language. We also discuss a number of issues and challenges associated with the extraction of embedded systems applications

    Abstract Practical Experience with an Application Extractor for Java

    No full text
    Java programs are routinely transmitted over low-bandwidth network connections as compressed class file archives (i.e., zip files and jar files). Since archive size is directly propor-tional to download time, it is desirable for applications to be as small as possible. This paper is concerned with the use of program transformations such as removal of dead meth-ods and fields, inlining of method calls, and simplification of the class hierarchy for reducing application size. Such “ex-traction ” techniques are generally believed to be especially useful for applications that use class libraries, since typi-cally only a small fraction of a library’s functionality is used. By “pruning away ” unused library functionality, application size can be reduced dramatically. We implemented a number of application extraction techniques in Jax, an application extractor for Java, and evaluate their effectiveness on a set of realistic benchmarks ranging from 27 to 2,332 classes (with archives ranging from 56,796 to 3,810,120 bytes). We report archive size reductions ranging from 13.4 % to 90.2 % (48.7% on aver age).
    corecore